<?php 
header("Content-type:text/html;charset=utf8");

require 'hd50/Compile.php';

/**
* 
*/
class View extends Compile
{	//定义数组
	private $vars=[];

	// 编译目录
	public $complie_dir = 'compile';


	public $template_dir = 'tpl';

	public $compileFile;

	// 模板文件
	private $tpl;

	function __construct(){}

	// 分配数据   统一格式
	public function assign()
	{	
		// 获得函数参数列表的数组
		$args = func_get_args();

		// print_r($args);exit;
		// 传入的数组的个数
		switch (count($args)) {
			case 1:
			//当传入的数组是一个的时候 
				foreach ($args[0] as $name => $value) {
					$this->vars[$name] = $value;
				}
				break;
			case 2:
			//当传入的数组是两个的时候
				$this->vars[$args[0]]=$args[1];
				break;
		}
		// print_r($this->vars);exit;
		return $this;

	}

	// 显示编译文件
	public function display($tpl)
	{	
		// echo 'ok';exit;
		// print_r(extract($this->vars));exit;
		// 模板文件   tpl/index.html
		$this->tpl = $this->template_dir.'/'.$tpl;
		//编译后的文件
		$this->compileFile = $this->complie_dir.'/'.md5($this->tpl).'.php';

		//验证编译文件，编译文件失效时重新编译
		
		if ($this->checkCompileFile()) {
			// 编译文件
			$this->compile();
		}
		
		// 分配变量  
		// 键名加个$ 变成变量  键值就是值   比如  web=>'houdun'   $web='doudun';
 		extract($this->vars);
 		
		// 调用编译文件
		require $this->compileFile;


	}

	//验证编译文件
	public function checkCompileFile()
	{	
		// 满足一个条件就要被编译
		// 不是一个文件  或者   新来的还没被整过 
		return !is_file($this->compileFile) || fileatime($this->tpl) >fileatime($this->compileFile);
	}

	// 编译模板
	public function compile()
	{	//将整个文件读入字符串
		$content = file_get_contents($this->tpl);
		// print_r($content);
		$content = $this->compileTpl($content);
		// 写入编译后的文件
		file_put_contents($this->compileFile,$content);
	}

}


 ?>